#ifndef SUDOKU_MOVE_HEURISTIC_SELECTION_H
#define SUDOKU_MOVE_HEURISTIC_SELECTION_H

#ifdef USE_HEURISTIC_SELECTION_LIBRARY

#include "hsl/DecisionMaker.h"

struct RCRC {
  int r1;
  int c1;
  int r2;
  int c2;
  RCRC(int ir1, int ic1, int ir2, int ic2)
    : r1(ir1), c1(ic1), r2(ir2), c2(ic2) {}
};

class MoveSelector: public DecisionMaker<RCRC, Singleton, void*, void*>  {
public:
    MoveSelector(int** grid, bool** fixed, int grLen, int sqLen);
    Singleton<RCRC> select();
private:
    int**       grid_;
    bool**      fixed_;
    int         grLen_;
    int         sqLen_;    
};

#endif

#endif
